/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.siseventos.managed;

import br.siseventos.dao.da.PapelDAO;
import br.siseventos.model.TdPapel;
import br.siseventos.view.util.CallbackHelper;
import br.siseventos.view.util.MessageHelper;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;

/**
 *
 * @author Michel
 */
@ManagedBean(name = "papelBean")
@SessionScoped
public class PapelBean {
    //Campos

    private String nome;
    private String descricao;
    private Boolean flag;
    private TdPapel papelSelecionado;
    private PapelDAO daoPapel;
    private List<TdPapel> papel;

    //Construtor
    public PapelBean() {
        //Inicializa o objeto Dao TipoLocal
        daoPapel = new PapelDAO();

        //Inicia a lista de locais
        repopularLista();
    }

    //Getters e Setters

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the flag
     */
    public Boolean getFlag() {
        return flag;
    }

    /**
     * @param flag the flag to set
     */
    public void setFlag(Boolean flag) {
        this.flag = flag;
    }

    /**
     * @return the papelSelecionado
     */
    public TdPapel getPapelSelecionado() {
        return papelSelecionado;
    }

    /**
     * @param papelSelecionado the papelSelecionado to set
     */
    public void setPapelSelecionado(TdPapel papelSelecionado) {
        this.papelSelecionado = papelSelecionado;
    }

    /**
     * @return the daoPapel
     */
    public PapelDAO getDaoPapel() {
        return daoPapel;
    }

    /**
     * @param daoPapel the daoPapel to set
     */
    public void setDaoPapel(PapelDAO daoPapel) {
        this.daoPapel = daoPapel;
    }

    /**
     * @return the papel
     */
    public List<TdPapel> getPapel() {
        return papel;
    }

    /**
     * @param papel the papel to set
     */
    public void setPapel(List<TdPapel> papel) {
        this.papel = papel;
    }
 
    

    //Actions e Listners
    public void cadastrarPapel(ActionEvent e) {
        TdPapel papelUsuario = new TdPapel(getNome(), getDescricao(), getFlag(), null);
        try {
            //Inclusão de objeto
            daoPapel.incluir(papelUsuario);
            repopularLista();

            //Mostrar Mensagem
            MessageHelper.showGlobalMessage("Papel de usuário cadastrado com sucesso!",
                    FacesMessage.SEVERITY_INFO);

            //Add callback
            CallbackHelper.addCallback("papelSalvo", true);

        } catch (Exception ex) {
            MessageHelper.showGlobalMessage("Erro ao cadastrar papel de usuário!",
                    FacesMessage.SEVERITY_ERROR);

        }
    }

    public void excluirPapel(ActionEvent e) {
        try {
            //Excluindo Papel
            daoPapel.excluir(getPapelSelecionado().getIdtPapel());
            repopularLista();

            //Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Tipo de papel excluído com sucesso!",
                    FacesMessage.SEVERITY_INFO);
        } catch (Exception ex) {

            //Mostrar mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao excluir papel de usuário!",
                    FacesMessage.SEVERITY_ERROR);
        }

    }

        public void alterarPapel(ActionEvent e) {

        try {
            //Excluindo o papel selecionado
            daoPapel.alterar(getPapelSelecionado());
 
            //Atualizando dataTable
            repopularLista();

            //Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Papel alterado com sucesso!",
                    FacesMessage.SEVERITY_INFO);
            
            // Adicionando o parametro de callback
            CallbackHelper.addCallback("papelEditado", true);
        } catch (Exception ex) {
            MessageHelper.showGlobalMessage("Erro ao alterar papel de usuário!",
                    FacesMessage.SEVERITY_ERROR);
        }
    }

    //Util
    private void repopularLista() {
        papel = daoPapel.consultarTodos();
    }    
}
